package sise.world.utils;

import java.util.ArrayList;
import java.util.List;

import sise.world.agent.AbstractAgent.AgentType;

public class SimulationConfiguration {

	private int amountsOfTunrs = 10000;
	private int rows = 30;
	private int cols = 40;
	private int foodPercentage = 15;
	private int treePercentage = 20;
	private int wormPercentage = 20 ;
	private int groundPercentage = 100;
	private int localAgentProbability = 1;
	private int diggerAgentProbability = 1;
	private int guardAngelProbability = 1;
	private int noAgentProbability = 85;
	private double createFoodBase = 10.0;
	private double createTreeBase = 5.0;
	private double createWormBase = 10.0;
	private double createFoodShift = 1.0;
	private double createTreeShift = 1.0;
	private double createWormShift = 1.0;
	private double nextTurnFoodBase = 1.116;
	private double nextTurnTreeBase = 1.472;
	private double nextTurnWormBase = 1.294;
	private double nextTurnFoodShift = 0.0;
	private double nextTurnTreeShift = 0.7;
	private double nextTurnWormShift = 0.80;
	private int groundRatio = 12;
	
	private List<AgentDescriptor> agents = new ArrayList<AgentDescriptor>();

	private String outputDirectoryPath;
	
	public SimulationConfiguration(String[] args) {

		agents.add(new AgentDescriptor(AgentType.BYSTRETKA_ROSLINOZERNA, "bystretkaRoslinozernaSiwy.clp",40)); 

		agents.add(new AgentDescriptor(AgentType.BYSTRETKA_MIESOZERNA, "bystretkaMiesozernaKasia.clp",40)); 
		agents.add(new AgentDescriptor(AgentType.DRAPIEZNIK, "drapieznikKasia.clp",40)); 

	//	agents.add(new AgentDescriptor(AgentType.BYSTRETKA_MIESOZERNA, "bystretkaMiesozernaEdyta.clp",40)); 
		agents.add(new AgentDescriptor(AgentType.DRAPIEZNIK, "drapieznikEdyta.clp",40)); 


		//agents.add(new AgentDescriptor(AgentType.BYSTRETKA_MIESOZERNA, "bystretkaMiesozernaEdyta.clp",40)); 


		

	}
	
	public int getAmountOfTurns(){
		return amountsOfTunrs;
	}

	public int getRows() {
		return rows;
	}

	public int getCols() {
		return cols;
	}

	public int getFoodPercentage() {
		return foodPercentage;
	}

	public int getTreePercentage() {
		return treePercentage;
	}

	public int getOrePercentage() {
		return wormPercentage;
	}

	public int getGroundPercentage() {
		return groundPercentage;
	}

	public int getLocalAgentProbability() {
		return localAgentProbability;
	}

	public int getDiggerAgentProbability() {
		return diggerAgentProbability;
	}

	public int getGuardAngelProbability() {
		return guardAngelProbability;
	}

	public int getNoAgentProbability() {
		return noAgentProbability;
	}

	public double getCreateFoodBase() {
		return createFoodBase;
	}

	public double getCreateTreeBase() {
		return createTreeBase;
	}

	public double getCreateWormBase() {
		return createWormBase;
	}

	public double getCreateFoodShift() {
		return createFoodShift;
	}

	public double getCreateTreeShift() {
		return createTreeShift;
	}

	public double getCreateWormShift() {
		return createWormShift;
	}

	public double getNextTurnFoodBase() {
		return nextTurnFoodBase;
	}

	public double getNextTurnTreeBase() {
		return nextTurnTreeBase;
	}

	public double getNextTurnWormBase() {
		return nextTurnWormBase;
	}

	public double getNextTurnFoodShift() {
		return nextTurnFoodShift;
	}

	public double getNextTurnTreeShift() {
		return nextTurnTreeShift;
	}

	public double getNextTurnWormShift() {
		return nextTurnWormShift;
	}
	
	public int getGroundRatio(){
		return groundRatio;
	}

	public List<AgentDescriptor> getAgents() {
		return agents;
	}

	public String getOutputDirectoryPath() {
		return outputDirectoryPath;
	}

	public void setOutputDirectoryPath(String outputDirectoryPath) {
		this.outputDirectoryPath = outputDirectoryPath;
	}

}
